// 数组的遍历方式


// 1.for 遍历方式

let arr1 = [1, 4, 5, 8, 2]

for (let i = 0; i < arr.length; i++) {
    if (arr[i] == 4) {
        // break
        continue
    }
    console.log(arr[i])
} 



// 2. forEach()

let arr2 = [2, 4, 6, 8, 2]

// 2. forEach() 不支持 break 和 continue ，不能中间退出循环
arr.forEach(function(elem, index, array){
    /* if (arr[i] == 4) {
        break
    } */
    /* if (arr[i] == 4) {
        continue
    } */
    console.log(elem)
})



// 3. map 
let arr = [2, 4, 6, 8, 2]

// 3. map() 返回一个新数组，不会对原来数组造成影响
let result1 = arr.map(function(value) {
    value += 1
    console.log(value)
    return value
})
console.log(arr, result);


// filter
let result2 = arr.filter(function (item) {
    return item > 1
  })
  console.log(result) //[2, 3]
  console.log(arr) //[1, 2, 3]
  



// 数组去重
// 方法1   利用ES6数据结构Set进行数组去重
const a = ['王同学','王同学','王同学']
let set = new Set(a); // set 自带去重
// Set { '王同学', '王同学' }
console.log(set);
console.error(Array.from(set)); // [ '王同学', '王同学' ]



//方法二 利用indexOf去重    
var a2 = ['h', 'e', 'l', 'l', 'o', '2', 1, 2, 1, 3, 2];
function noRepeat1(arr) {
    var newArr = [];

    for (var i = 0; i < a.length; i++) {
        if (newArr.indexOf(a[i]) == -1) {
            newArr.push(a[i]);
        }
    }

    return newArr;
}
var res = noRepeat1(arr2);
console.log(res);  // [ "h", "e", "l", "o", "2", 1, 2, 3 ]